package Classes;

import java.io.Serializable;
import java.text.*;
import java.util.*;

/**
 * Classe para representar uma atividade do usuario.
 * 
 * @author Arthur Lima
 */
public class Atividade implements Serializable{

    final Date DATA = new Date(System.currentTimeMillis());
    private DateFormat f = DateFormat.getDateTimeInstance();
    private final Item ITEM;
    private final Acao ACAO;

    /**
     * Construtor de uma atividade.
     * @param item
     *      O item que sofreu a ação.
     * @param acao 
     *      A acao sofrida pelo item.
     */
    public Atividade(Item item, Acao acao){	
        ITEM = item;
        ACAO = acao;	
    }

    /**
     * Metodo accessor da data Atual.
     * @return A data atual formatada.
     */
    public String getData(){
        return f.format(DATA);
    }

    /**
     * Metodo accessor do Item.
     * @return O item.
     */
    public Item getItem(){
            return ITEM;
    }

    /**
     * Metodo accessor da Acao realizada.
     * @return A acao realizada pelo usuario.
     */
    public Acao getAcao(){
        return ACAO;
    }

    /**
     * Metodo que retorna a acao do usuario.
     * @param acao
     *          A acao realizada com o item.
     * @return
     *          O status do item.
     */
    public String acaoEnum(Acao acao) {
        switch (acao) {
        case REMOVER:
            return "removido";
        case ADICIONAR:
            return "adicionado";
        case PEGAR:
            return "pego";
        default:
            return "devolvido";
        }
    }

    private String geraRelatorio() { 
        if (ITEM instanceof Livro) 
            return "O livro " + ((Livro)ITEM).getNome() + " foi " + acaoEnum(ACAO) + " em " +getData() + ".";
        return "O Item foi " + acaoEnum(ACAO) + " em " +getData() + ".";
    }
    
    @Override
    public String toString(){
        return geraRelatorio();
    }
    
}
